AWS DataSync エージェントをデプロイした EC2 インスタンスに SSM セッションマネージャーで接続していろいろ探ってみた
コンバンハ、千葉(幸)です。
AWS DataSync のコンポーネントのうち、エージェントは Amazon EC2 で構成することができます。
公式で提供されている DataSync エージェント用の AMI からインスタンスを作成し、エンドポイントと通信させてアクティベートすることでエージェントとして機能します。
DataSync エージェントインスタンスでは、通常のキーペアを使用した SSH 接続を試みても OS 領域にアクセスすることができません。DataSync エージェントのローカルコンソールに接続される形となります。
しかし、起動時にユーザーデータで SSM(Systems Manager) エージェントをセットアップすることで、通常のインスタンスと同様にセッションマネージャーの機能でアクセス可能となります。
せっかくなので、DataSync 用の AMI から起動したインスタンスは通常のものと何が違うのかをいろいろと探ってみたいと思います。
探究心、それは人類の原初から DNA に刻み込まれているものです。
目次
今回やることについてもう少し補足
単純に DataSync エージェントを EC2 インスタンスにデプロイする様子については以下のエントリで書きました。基本的な設定内容はこのエントリを踏襲します。
使用する AMI は現時点で最新の以下を選択しました。
- aws-datasync-1593551918 - ami-02de0268b0efe9fc7
- m5.2xlarge
DataSync エージェントの要件ではありませんが、個人の趣味として SSM 接続をするために、インスタンスローンチ時にユーザーデータとして以下を設定しています。
#!/bin/bash cd /tmp sudo yum install -y https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/linux_amd64/amazon-ssm-agent.rpm sudo start amazon-ssm-agent
ローンチ後、ディレクトリを階層化して確認したかったのでtree
をインストールしました。
[root@ip-192-168-0-176 env]# yum install tree Loaded plugins: priorities, update-motd, upgrade-helper amzn-main | 2.1 kB 00:00:00 amzn-updates | 3.8 kB 00:00:00 1072 packages excluded due to repository priority protections Resolving Dependencies --> Running transaction check ---> Package tree.x86_64 0:1.6.0-5.8.amzn1 will be installed --> Finished Dependency Resolution --- 略 --- Installed: tree.x86_64 0:1.6.0-5.8.amzn1 Complete!
また、EC2 コンソールから確認できるシステムログの内容より、 DataSync エージェント用 AMI は以下の AMI がベースになっていることがわかります。
--- 略 --- image_name="amzn-ami-hvm" image_version="2018.03" image_arch="x86_64" image_file="amzn-ami-hvm-2018.03.0.20181116-x86_64.ext4.gpt" image_stamp="1eb2-dca9" image_date="20181116230743" recipe_name="amzn ami" recipe_id="f77a9127-a78d-21b7-174f-f788-81b9-dc54-58052337" Welcome to Amazon Linux AMI --- 略 ---
DataSync エージェント用 AMI との比較のために通常の Amazon Linux の AMI からインスタンスを作成し、必要に応じて併記することにします。
- amzn-ami-hvm-2018.03.0.20181116-x86_64-ebs - ami-016ad6443b4a3d960
- m5.large
それでは早速確認していきます。
ユーザー関連
/etc/passwd
以下ハイライト部が、通常の Amazon Linux と比べて追加されているユーザーです。
この後にも出てきますが、 Storage Gateway がインストールされるというのが面白いですね。
[root@ip-192-168-0-176 ~]# cat /etc/passwd root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin sync:x:5:0:sync:/sbin:/bin/sync shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown halt:x:7:0:halt:/sbin:/sbin/halt mail:x:8:12:mail:/var/spool/mail:/sbin/nologin uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin operator:x:11:0:operator:/root:/sbin/nologin games:x:12:100:games:/usr/games:/sbin/nologin gopher:x:13:30:gopher:/var/gopher:/sbin/nologin ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin nobody:x:99:99:Nobody:/:/sbin/nologin rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin ntp:x:38:38::/etc/ntp:/sbin/nologin saslauth:x:499:76:"Saslauthd user":/var/empty/saslauth:/sbin/nologin mailnull:x:47:47::/var/spool/mqueue:/sbin/nologin smmsp:x:51:51::/var/spool/mqueue:/sbin/nologin rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin dbus:x:81:81:System message bus:/:/sbin/nologin ec2-user:x:500:500:EC2 Default User:/home/ec2-user:/bin/bash tcpdump:x:72:72::/:/sbin/nologin sgserver:x:498:495::/usr/local/aws-storage-gateway:/sbin/nologin admin:x:497:494::/home/sguser:/usr/local/aws-storage-gateway/appliance_console ssm-user:x:501:501::/home/ssm-user:/bin/bash
/etc/shadow
先ほど確認した 3 ユーザー分の差異は当然発生します。admin
にはパスワードが設定されています。
ec2-user
の第二フィールドが*
になっている点も通常のインスタンスと異なっています。
[root@ip-192-168-0-176 ~]# cat /etc/shadow root:*LOCK*:14600:::::: bin:*:16323:0:99999:7::: daemon:*:16323:0:99999:7::: adm:*:16323:0:99999:7::: lp:*:16323:0:99999:7::: sync:*:16323:0:99999:7::: shutdown:*:16323:0:99999:7::: halt:*:16323:0:99999:7::: mail:*:16323:0:99999:7::: uucp:*:16323:0:99999:7::: operator:*:16323:0:99999:7::: games:*:16323:0:99999:7::: gopher:*:16323:0:99999:7::: ftp:*:16323:0:99999:7::: nobody:*:16323:0:99999:7::: rpc:!!:17851:0:99999:7::: ntp:!!:17851:::::: saslauth:!!:17851:::::: mailnull:!!:17851:::::: smmsp:!!:17851:::::: rpcuser:!!:17851:::::: nfsnobody:!!:17851:::::: sshd:!!:17851:::::: dbus:!!:17851:::::: ec2-user:*:18443:0:99999:7::: tcpdump:!!:18443:::::: sgserver:!!:18443:::::: admin:!$1$lh/y5SVj$LYIcvRwMHz7pRtLc7/KGl0:18443:::::: ssm-user:!!:18493:0:99999:7:::
通常のインスタンスでは!!
になっています。
[root@ip-192-168-0-56 ~]# cat /etc/shadow root:*LOCK*:14600:::::: bin:*:16323:0:99999:7::: daemon:*:16323:0:99999:7::: adm:*:16323:0:99999:7::: lp:*:16323:0:99999:7::: sync:*:16323:0:99999:7::: shutdown:*:16323:0:99999:7::: halt:*:16323:0:99999:7::: mail:*:16323:0:99999:7::: uucp:*:16323:0:99999:7::: operator:*:16323:0:99999:7::: games:*:16323:0:99999:7::: gopher:*:16323:0:99999:7::: ftp:*:16323:0:99999:7::: nobody:*:16323:0:99999:7::: rpc:!!:17851:0:99999:7::: ntp:!!:17851:::::: saslauth:!!:17851:::::: mailnull:!!:17851:::::: smmsp:!!:17851:::::: rpcuser:!!:17851:::::: nfsnobody:!!:17851:::::: sshd:!!:17851:::::: dbus:!!:17851:::::: ssm-user:!!:18493:0:99999:7::: ec2-user:!!:18493:0:99999:7:::
/etc/shadow の読み方を散々調べたのですが、!!
と*
の違いについて、これだ!というソースをうまく見つけられませんでした。(知っている方がいたら教えてください。)
ちなみにec2-user
のホームディレクトリはありませんし、キーペアを用いての SSH 接続はできません。
[root@ip-192-168-0-176 ~]# ls -la /home total 16 drwxr-xr-x 4 root root 4096 Aug 19 11:09 . dr-xr-xr-x 25 root root 4096 Aug 19 11:09 .. drwxr-xr-x 4 admin admin 4096 Aug 19 11:09 sguser drwx------ 2 ssm-user ssm-user 4096 Aug 19 11:09 ssm-user
/etc/group
ユーザーの差分は 3 つでしたが、グループの差分は 5 つありました。wireshark
とかどこから出てきたんだろう……というのは気になります。
[root@ip-192-168-0-176 ~]# cat /etc/group root:x:0: bin:x:1:bin,daemon daemon:x:2:bin,daemon sys:x:3:bin,adm adm:x:4:adm,daemon tty:x:5: disk:x:6:,sgserver lp:x:7:daemon mem:x:8: kmem:x:9: wheel:x:10:ec2-user mail:x:12:mail uucp:x:14: man:x:15: games:x:20: gopher:x:30: video:x:39: dip:x:40: ftp:x:50: lock:x:54: audio:x:63: nobody:x:99: users:x:100: utmp:x:22: utempter:x:35: rpc:x:32: cdrom:x:11: tape:x:33: dialout:x:18: floppy:x:19: ssh_keys:x:499: ntp:x:38: cgred:x:498: saslauth:x:76: mailnull:x:47: smmsp:x:51: rpcuser:x:29: nfsnobody:x:65534: sshd:x:74: dbus:x:81: screen:x:84: ec2-user:x:500: printadmin:x:497: wireshark:x:496: tcpdump:x:72: sgserver:x:495: admin:x:494: ssm-user:x:501:
admin ユーザーのホームディレクトリ
admin
ユーザーのホームディレクトリは/home/sguser
として用意されています。
env
というディレクトリのみが存在したので中身を調べると、以下のようになっていました。
[root@ip-192-168-0-176 env]# ls -la /home/sguser/env/ total 16 drwxr-xr-x 2 root root 4096 Aug 19 11:09 . drwxr-xr-x 4 admin admin 4096 Aug 19 11:09 .. lrwxrwxrwx 1 root root 47 Aug 19 11:09 exit -> /usr/local/aws-storage-gateway/console/bin/exit lrwxrwxrwx 1 root root 44 Aug 19 11:09 h -> /usr/local/aws-storage-gateway/console/bin/h lrwxrwxrwx 1 root root 51 Aug 19 11:09 ifconfig -> /usr/local/aws-storage-gateway/console/bin/ifconfig lrwxrwxrwx 1 root root 45 Aug 19 11:09 ip -> /usr/local/aws-storage-gateway/console/bin/ip lrwxrwxrwx 1 root root 51 Aug 19 11:09 iptables -> /usr/local/aws-storage-gateway/console/bin/iptables lrwxrwxrwx 1 root root 63 Aug 19 11:09 open-support-channel -> /usr/local/aws-storage-gateway/console/bin/open-support-channel lrwxrwxrwx 1 root root 56 Aug 19 11:09 save-iptables -> /usr/local/aws-storage-gateway/console/bin/save-iptables lrwxrwxrwx 1 root root 61 Aug 19 11:09 save-routing-table -> /usr/local/aws-storage-gateway/console/bin/save-routing-table
/usr/local/aws-storage-gateway
シンボリックリンク先の/usr/local/aws-storage-gateway/
の内訳は以下のようになっています。
[root@ip-192-168-0-176 env]# tree /usr/local/aws-storage-gateway/ /usr/local/aws-storage-gateway/ ├── appliance_console -> /usr/local/aws-storage-gateway-5.0.345.0/appliance_console ├── boot-resource-check -> /usr/local/aws-storage-gateway-5.0.345.0/boot-resource-check ├── config │ └── coral-config-thinstaller │ ├── FmrsAgentActivationServiceClientConfig-1.0 │ │ └── coral-config │ │ └── FmrsAgentActivationServiceCommon-global.config -> /usr/local/aws-storage-gateway-5.0.345.0/config/coral-config/FmrsAgentActivationServiceClientConfig-1.0/coral-config/FmrsAgentActivationServiceCommon-global.config │ └── FmrsControlPlaneServiceClientConfig-1.0 │ └── coral-config │ ├── FmrsControlPlaneServiceCommon-global.config -> /usr/local/aws-storage-gateway-5.0.345.0/config/coral-config/FmrsControlPlaneServiceClientConfig-1.0/coral-config/FmrsControlPlaneServiceCommon-global.config │ └── FmrsControlPlaneService-prod.config -> /usr/local/aws-storage-gateway-5.0.345.0/config/coral-config/FmrsControlPlaneServiceClientConfig-1.0/coral-config/FmrsControlPlaneService-prod.config ├── console │ ├── bashrc -> /usr/local/aws-storage-gateway-5.0.345.0/console/bashrc │ ├── bin │ │ ├── grant-aws-support-access -> /usr/local/aws-storage-gateway-5.0.345.0/console/bin/grant-aws-support-access │ │ ├── h -> /usr/local/aws-storage-gateway-5.0.345.0/console/bin/h │ │ ├── ifconfig -> /usr/local/aws-storage-gateway-5.0.345.0/console/bin/ifconfig │ │ ├── ip -> /usr/local/aws-storage-gateway-5.0.345.0/console/bin/ip │ │ ├── iptables -> /usr/local/aws-storage-gateway-5.0.345.0/console/bin/iptables │ │ ├── open-support-channel -> /usr/local/aws-storage-gateway-5.0.345.0/console/bin/open-support-channel │ │ ├── passwd -> /usr/bin/passwd │ │ ├── revoke-aws-support-access -> /usr/local/aws-storage-gateway-5.0.345.0/console/bin/revoke-aws-support-access │ │ ├── save-iptables -> /usr/local/aws-storage-gateway-5.0.345.0/console/bin/save-iptables │ │ ├── save-routing-table -> /usr/local/aws-storage-gateway-5.0.345.0/console/bin/save-routing-table │ │ └── testconn -> /usr/local/aws-storage-gateway-5.0.345.0/console/bin/testconn │ ├── commands │ │ ├── 200_network_configuration.sh -> /usr/local/aws-storage-gateway-5.0.345.0/console/commands/200_network_configuration.sh │ │ ├── 210_connectivity_tests.sh -> /usr/local/aws-storage-gateway-5.0.345.0/console/commands/210_connectivity_tests.sh │ │ ├── 300_system_resource_check.sh -> /usr/local/aws-storage-gateway-5.0.345.0/console/commands/300_system_resource_check.sh │ │ ├── 400_system_time_management.sh -> /usr/local/aws-storage-gateway-5.0.345.0/console/commands/400_system_time_management.sh │ │ └── 500_command_prompt.sh -> /usr/local/aws-storage-gateway-5.0.345.0/console/commands/500_command_prompt.sh │ ├── console_env_var -> /usr/local/aws-storage-gateway-5.0.345.0/console/console_env_var │ ├── ec2_command -> /usr/local/aws-storage-gateway-5.0.345.0/console/ec2_command │ ├── gateway.pem -> /usr/local/aws-storage-gateway-5.0.345.0/console/gateway.pem │ ├── init_console -> /usr/local/aws-storage-gateway-5.0.345.0/console/init_console │ ├── onpremise_command -> /usr/local/aws-storage-gateway-5.0.345.0/console/onpremise_command │ └── support-host -> /usr/local/aws-storage-gateway-5.0.345.0/console/support-host ├── creds │ ├── authorized_keys -> /usr/local/aws-storage-gateway-5.0.345.0/creds/authorized_keys │ └── known_hosts -> /usr/local/aws-storage-gateway-5.0.345.0/creds/known_hosts ├── diagnostics │ └── supportrc -> /usr/local/aws-storage-gateway-5.0.345.0/diagnostics/supportrc ├── ec2Indicator.txt ├── FmrsThinstaller.jar -> /usr/local/aws-storage-gateway-5.0.345.0/FmrsThinstaller.jar ├── gateway-ip -> /usr/local/aws-storage-gateway-5.0.345.0/gateway-ip ├── truststore │ └── InternalAndExternalTrustStore.jks -> /usr/local/aws-storage-gateway-5.0.345.0/truststore/InternalAndExternalTrustStore.jks └── var ├── bootcheck-results.txt ├── output │ └── logs │ ├── access_log │ ├── service_log │ ├── Thinstaller.log.2020-06-30-21 │ └── Thinstaller.log.2020-08-19-11 └── syncCachedApplianceEndpointsFromS3
/usr/local/aws-storage-gateway-5.0.345.0
上記のディレクトリ内でもさらに/usr/local/aws-storage-gateway-5.0.345.0
配下にシンボリックリンクが多く設けられているので、中身を確認します。
[root@ip-192-168-0-176 ~]# tree /usr/local/aws-storage-gateway-5.0.345.0/ /usr/local/aws-storage-gateway-5.0.345.0/ ├── appliance_console ├── boot-resource-check ├── config │ └── coral-config │ ├── FmrsAgentActivationServiceClientConfig-1.0 │ │ └── coral-config │ │ └── FmrsAgentActivationServiceCommon-global.config │ └── FmrsControlPlaneServiceClientConfig-1.0 │ └── coral-config │ ├── FmrsControlPlaneServiceCommon-global.config │ └── FmrsControlPlaneService-prod.config ├── console │ ├── bashrc │ ├── bin │ │ ├── grant-aws-support-access │ │ ├── h │ │ ├── ifconfig │ │ ├── ip │ │ ├── iptables │ │ ├── open-support-channel │ │ ├── revoke-aws-support-access │ │ ├── save-iptables │ │ ├── save-routing-table │ │ └── testconn │ ├── commands │ │ ├── 200_network_configuration.sh │ │ ├── 210_connectivity_tests.sh │ │ ├── 300_system_resource_check.sh │ │ ├── 400_system_time_management.sh │ │ └── 500_command_prompt.sh │ ├── console_env_var │ ├── ec2_command │ ├── gateway.pem │ ├── init_console │ ├── onpremise_command │ └── support-host ├── creds │ ├── authorized_keys │ └── known_hosts ├── diagnostics │ └── supportrc ├── FmrsThinstaller.jar ├── gateway-ip ├── ip-updater.sh └── truststore └── InternalAndExternalTrustStore.jks
通常、ユーザーが DataSync エージェントにアクセスする際はローカルコンソールに接続することになりますが、そこで実行する内容はこのディレクトリの辺りで定義されているようです。
ローカルコンソールで操作可能な内容については以下を参照してください。
Configuring Your Agent on the VM Local Console - AWS DataSync
サービス関連
service コマンド
systemctl コマンドを打とうとするとそんなものはないと怒られたので、 service コマンドで確認します。
通常はiptables: Firewall is not running.
となっている箇所が、iptables で定義されているテーブルの内容が表示されています。(アクティベート後にはエントリが消えます。)
読み方に自信がないですが、8080 ポートで受け付けた全ての通信を 80 ポートにリダイレクトしているように見えます。
加えて、末尾の 2 つも追加されていました。
[root@ip-192-168-0-176 ~]# service --status-all acpid (pid 2629) is running... atd (pid 2741) is running... auditd (pid 2272) is running... cfn-hup is stopped Stopped cgred is stopped Checking for service cloud-init:Checking for service cloud-init:Checking for service cloud-init:Checking for service cloud-init:crond (pid 2725) is running... Checking hibagent... Service not running Checking for service hibinit-agent:ip6tables: Firewall is not running. Table: nat Chain PREROUTING (policy ACCEPT) num target prot opt source destination 1 REDIRECT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 redir ports 8080 Chain INPUT (policy ACCEPT) num target prot opt source destination Chain OUTPUT (policy ACCEPT) num target prot opt source destination Chain POSTROUTING (policy ACCEPT) num target prot opt source destination irqbalance (pid 2311) is running... lvmetad (pid 1709) is running... lvmpolld (pid 1718) is running... dmeventd is stopped mdmonitor is stopped messagebus (pid 2393) is running... netconsole module not loaded Configured devices: lo eth0 Currently active devices: lo eth0 rpc.svcgssd is stopped rpc.mountd is stopped nfsd is stopped rpc.rquotad is stopped rpc.statd (pid 2362) is running... ntpd (pid 2664) is running... Process accounting is disabled. quota_nld is stopped rdisc is stopped rngd (pid 2321) is running... rpcbind (pid 2341) is running... rpc.gssd is stopped rpc.idmapd is stopped rpc.svcgssd is stopped rsyslogd (pid 2293) is running... saslauthd is stopped sendmail is stopped sm-client dead but pid file exists openssh-daemon (pid 2653) is running... VGAuthService is stopped vmtoolsd dead but pid file exists
/etc/init.d
サービスで確認できたもの以外でもいくつか追加されているものがあります。
[root@ip-192-168-0-176 ~]# ls -la /etc/init.d/ total 284 drwxr-xr-x 2 root root 4096 Aug 20 10:56 . drwxr-xr-x 10 root root 4096 Nov 16 2018 .. -rwxr-xr-x 1 root root 1729 Mar 27 2017 acpid -rwxr-xr-x 1 root root 2297 Jun 30 21:22 add-sguser -rwxr-xr-x 1 root root 2062 Aug 16 2016 atd -rwxr-xr-x 1 root root 3448 Mar 8 2017 auditd -rwxr-xr-x 1 root root 5834 Jul 31 15:08 aws-gateway-sync-agent -r-xr-xr-x 1 root root 1362 Mar 30 2017 blk-availability lrwxrwxrwx 1 root root 46 Nov 16 2018 cfn-hup -> /opt/aws/apitools/cfn-init/init/redhat/cfn-hup -rwxr-xr-x 1 root root 5160 Feb 28 2014 cgconfig -rwxr-xr-x 1 root root 3580 Feb 28 2014 cgred -rwxr-xr-x 1 root root 3782 Oct 4 2018 cloud-config -rwxr-xr-x 1 root root 3763 Oct 4 2018 cloud-final -rwxr-xr-x 1 root root 3855 Oct 4 2018 cloud-init -rwxr-xr-x 1 root root 3840 Oct 4 2018 cloud-init-local -rwxr-xr-x 1 root root 2826 Sep 28 2016 crond -rw-r--r-- 1 root root 25651 Aug 17 2017 functions -rwxr-xr-x 1 root root 6037 Aug 17 2017 halt -rwxr-xr-x 1 root root 1395 Dec 13 2017 hibagent -rwxr-xr-x 1 root root 2267 Nov 12 2018 hibinit-agent -rwxr-xr-x 1 root root 8563 Sep 27 2013 ip6tables -rwxr-xr-x 1 root root 8468 Sep 27 2013 iptables -rwxr-xr-x 1 root root 1955 Oct 29 2018 irqbalance -rwxr-xr-x 1 root root 652 Jan 18 2017 killall -r-xr-xr-x 1 root root 2137 Mar 30 2017 lvm2-lvmetad -r-xr-xr-x 1 root root 2274 Mar 30 2017 lvm2-lvmpolld -r-xr-xr-x 1 root root 3045 Mar 30 2017 lvm2-monitor -rwxr-xr-x 1 root root 2904 Sep 18 2014 mdmonitor -rwxr-xr-x 1 root root 2200 Jul 2 2019 messagebus -rwxr-xr-x 1 root root 4334 Jan 18 2017 netconsole -rwxr-xr-x 1 root root 5309 Jan 18 2017 netfs -rwxr-xr-x 1 root root 6742 Aug 17 2017 network -rwxr-xr-x 1 root root 6703 Oct 8 2015 nfs -rwxr-xr-x 1 root root 3526 Oct 8 2015 nfslock -rwxr-xr-x 1 root root 1926 May 3 2019 ntpd -rwxr-xr-x 1 root root 2049 May 3 2019 ntpdate -rwxr-xr-x 1 root root 1556 Sep 10 2014 psacct -rwxr-xr-x 1 root root 2034 Sep 27 2013 quota_nld -rwxr-xr-x 1 root root 1515 May 17 2016 rdisc -rwxr-xr-x 1 root root 691 Jun 30 19:59 restore-routing-table -rwxr-xr-x 1 root root 1816 Aug 17 2017 rngd -rwxr-xr-x 1 root root 2073 May 9 2018 rpcbind -rwxr-xr-x 1 root root 2518 Oct 8 2015 rpcgssd -rwxr-xr-x 1 root root 2305 Oct 8 2015 rpcidmapd -rwxr-xr-x 1 root root 2464 Oct 8 2015 rpcsvcgssd -rwxr-xr-x 1 root root 2011 Nov 11 2014 rsyslog -rwxr-xr-x 1 root root 2056 Sep 10 2014 saslauthd -rwxr-xr-x 1 root root 3702 Aug 17 2016 sendmail -rwxr-xr-x 1 root root 647 Jan 18 2017 single -rwxr-xr-x 1 root root 4180 Oct 23 2019 sshd -rwxr-xr-x 1 root root 1144 Mar 25 2016 sysstat -rwxr-xr-x 1 root root 1642 Mar 19 2014 udev-post -rwxr-xr-x 1 root root 1873 Apr 4 2017 vgauthd -rwxr-xr-x 1 root root 2048 Apr 4 2017 vmtoolsd
chkconfig コマンド
基本的には今まで確認した通りです。
[root@ip-192-168-0-176 ~]# chkconfig acpid 0:off 1:off 2:on 3:on 4:on 5:on 6:off add-sguser 0:off 1:off 2:on 3:on 4:on 5:on 6:off atd 0:off 1:off 2:off 3:on 4:on 5:on 6:off auditd 0:off 1:off 2:on 3:on 4:on 5:on 6:off blk-availability 0:off 1:on 2:on 3:on 4:on 5:on 6:off cgconfig 0:off 1:off 2:off 3:off 4:off 5:off 6:off cgred 0:off 1:off 2:off 3:off 4:off 5:off 6:off cloud-config 0:off 1:off 2:on 3:on 4:on 5:on 6:off cloud-final 0:off 1:off 2:on 3:on 4:on 5:on 6:off cloud-init 0:off 1:off 2:on 3:on 4:on 5:on 6:off cloud-init-local 0:off 1:off 2:on 3:on 4:on 5:on 6:off crond 0:off 1:off 2:on 3:on 4:on 5:on 6:off hibagent 0:off 1:off 2:off 3:off 4:off 5:off 6:off hibinit-agent 0:off 1:off 2:on 3:on 4:on 5:on 6:off ip6tables 0:off 1:off 2:on 3:on 4:on 5:on 6:off iptables 0:off 1:off 2:on 3:on 4:on 5:on 6:off irqbalance 0:off 1:off 2:on 3:on 4:on 5:on 6:off lvm2-lvmetad 0:off 1:on 2:on 3:on 4:on 5:on 6:off lvm2-lvmpolld 0:off 1:on 2:on 3:on 4:on 5:on 6:off lvm2-monitor 0:off 1:on 2:on 3:on 4:on 5:on 6:off mdmonitor 0:off 1:off 2:on 3:on 4:on 5:on 6:off messagebus 0:off 1:off 2:on 3:on 4:on 5:on 6:off netconsole 0:off 1:off 2:off 3:off 4:off 5:off 6:off netfs 0:off 1:off 2:off 3:on 4:on 5:on 6:off network 0:off 1:off 2:on 3:on 4:on 5:on 6:off nfs 0:off 1:off 2:off 3:off 4:off 5:off 6:off nfslock 0:off 1:off 2:off 3:on 4:on 5:on 6:off ntpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off ntpdate 0:off 1:off 2:off 3:off 4:off 5:off 6:off psacct 0:off 1:off 2:off 3:off 4:off 5:off 6:off quota_nld 0:off 1:off 2:off 3:off 4:off 5:off 6:off rdisc 0:off 1:off 2:off 3:off 4:off 5:off 6:off restore-routing-table 0:off 1:off 2:on 3:on 4:on 5:on 6:off rngd 0:off 1:off 2:on 3:on 4:on 5:on 6:off rpcbind 0:off 1:off 2:on 3:on 4:on 5:on 6:off rpcgssd 0:off 1:off 2:off 3:on 4:on 5:on 6:off rpcsvcgssd 0:off 1:off 2:off 3:off 4:off 5:off 6:off rsyslog 0:off 1:off 2:on 3:on 4:on 5:on 6:off saslauthd 0:off 1:off 2:off 3:off 4:off 5:off 6:off sendmail 0:off 1:off 2:on 3:on 4:on 5:on 6:off sshd 0:off 1:off 2:on 3:on 4:on 5:on 6:off sysstat 0:off 1:on 2:on 3:on 4:on 5:on 6:off udev-post 0:off 1:on 2:on 3:on 4:on 5:on 6:off vgauthd 0:off 1:off 2:on 3:on 4:on 5:on 6:off vmtoolsd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
プロセス・ポート関連
netstat コマンド
アクティベート時には TCP 80 で通信が必要なため、起動した時点でリッスンしているのかと想像していましたが、そういったわけではないようでした。
後続でここに関連する内容が出てきますが、サーバ としては TCP 8080 でリッスンするようです。通常のインスタンスとの違いはこの箇所のみです。そう言えば iptables でリダイレクトしていたのもきっとここに関係していますね。
[root@ip-192-168-0-176 ~]# netstat -anp Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 2323/rpcbind tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 2756/java tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 2637/sshd tcp 0 0 0.0.0.0:39261 0.0.0.0:* LISTEN 2344/rpc.statd tcp 0 0 192.168.0.176:57576 52.119.220.97:443 ESTABLISHED 2800/amazon-ssm-age tcp 0 341 192.168.0.176:57646 52.119.220.97:443 ESTABLISHED 2971/ssm-session-wo tcp 0 0 192.168.0.176:39056 54.240.225.173:443 ESTABLISHED 2800/amazon-ssm-age tcp 0 0 192.168.0.176:39610 52.119.221.73:443 TIME_WAIT - tcp 0 0 :::111 :::* LISTEN 2323/rpcbind tcp 0 0 :::22 :::* LISTEN 2637/sshd tcp 0 0 :::57697 :::* LISTEN 2344/rpc.statd udp 0 0 0.0.0.0:42642 0.0.0.0:* 2344/rpc.statd udp 0 0 0.0.0.0:68 0.0.0.0:* 1919/dhclient udp 0 0 0.0.0.0:111 0.0.0.0:* 2323/rpcbind udp 0 0 192.168.0.176:123 0.0.0.0:* 2648/ntpd udp 0 0 127.0.0.1:123 0.0.0.0:* 2648/ntpd udp 0 0 0.0.0.0:123 0.0.0.0:* 2648/ntpd udp 0 0 0.0.0.0:800 0.0.0.0:* 2323/rpcbind udp 0 0 127.0.0.1:824 0.0.0.0:* 2344/rpc.statd udp 0 0 :::52251 :::* 2344/rpc.statd udp 0 0 :::111 :::* 2323/rpcbind udp 0 0 :::800 :::* 2323/rpcbind --- 略 ---
ちなみにアクティベートが済むと 8080 のリッスンは無くなり、いくつかリッスンポートが増えます。
パブリックサービスエンドポイント向けと思われる 443 向けのアウトバウンド通信も増えています。
[root@ip-192-168-0-176 ~]# netstat -anp Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 127.0.0.1:9090 0.0.0.0:* LISTEN 4442/java tcp 0 0 127.0.0.1:9091 0.0.0.0:* LISTEN 4091/fmrsd tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 2341/rpcbind tcp 0 0 0.0.0.0:38613 0.0.0.0:* LISTEN 2362/rpc.statd tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 2653/sshd tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 4091/fmrsd tcp 0 0 192.168.0.146:50532 54.65.3.60:443 ESTABLISHED 4442/java tcp 0 0 192.168.0.146:50538 54.65.3.60:443 ESTABLISHED 4442/java tcp 0 341 192.168.0.146:35634 52.119.220.97:443 ESTABLISHED 2953/ssm-session-wo tcp 0 0 192.168.0.146:50544 54.65.3.60:443 ESTABLISHED 4442/java tcp 0 0 192.168.0.146:50542 54.65.3.60:443 ESTABLISHED 4442/java tcp 0 0 192.168.0.146:35594 52.119.220.97:443 ESTABLISHED 2817/amazon-ssm-age tcp 0 0 192.168.0.146:51372 54.240.225.178:443 ESTABLISHED 2817/amazon-ssm-age tcp 0 0 192.168.0.146:50534 54.65.3.60:443 ESTABLISHED 4442/java tcp 0 0 192.168.0.146:50536 54.65.3.60:443 ESTABLISHED 4442/java tcp 0 0 192.168.0.146:50540 54.65.3.60:443 ESTABLISHED 4442/java tcp 0 0 192.168.0.146:50546 54.65.3.60:443 ESTABLISHED 4442/java tcp 0 0 :::111 :::* LISTEN 2341/rpcbind tcp 0 0 :::22 :::* LISTEN 2653/sshd tcp 0 0 :::47835 :::* LISTEN 2362/rpc.statd udp 0 0 0.0.0.0:68 0.0.0.0:* 1935/dhclient udp 0 0 0.0.0.0:111 0.0.0.0:* 2341/rpcbind udp 0 0 192.168.0.146:123 0.0.0.0:* 2664/ntpd udp 0 0 127.0.0.1:123 0.0.0.0:* 2664/ntpd udp 0 0 0.0.0.0:123 0.0.0.0:* 2664/ntpd udp 0 0 0.0.0.0:818 0.0.0.0:* 2341/rpcbind udp 0 0 127.0.0.1:842 0.0.0.0:* 2362/rpc.statd udp 0 0 0.0.0.0:40678 0.0.0.0:* 2362/rpc.statd udp 0 0 :::111 :::* 2341/rpcbind udp 0 0 :::818 :::* 2341/rpcbind udp 0 0 :::35955 :::* 2362/rpc.statd --- 略 ---
lsof コマンド
lsof
コマンドで確認しても同様です。
[root@ip-192-168-0-176 ~]# lsof -i -P COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME dhclient 1919 root 5u IPv4 1918 0t0 UDP *:68 rpcbind 2323 rpc 6u IPv4 13266 0t0 UDP *:111 rpcbind 2323 rpc 7u IPv4 13267 0t0 UDP *:800 rpcbind 2323 rpc 8u IPv4 13268 0t0 TCP *:111 (LISTEN) rpcbind 2323 rpc 9u IPv6 13269 0t0 UDP *:111 rpcbind 2323 rpc 10u IPv6 13270 0t0 UDP *:800 rpcbind 2323 rpc 11u IPv6 13271 0t0 TCP *:111 (LISTEN) rpc.statd 2344 rpcuser 5u IPv4 11504 0t0 UDP localhost:824 rpc.statd 2344 rpcuser 8u IPv4 15413 0t0 UDP *:42642 rpc.statd 2344 rpcuser 9u IPv4 15415 0t0 TCP *:39261 (LISTEN) rpc.statd 2344 rpcuser 10u IPv6 15417 0t0 UDP *:52251 rpc.statd 2344 rpcuser 11u IPv6 15419 0t0 TCP *:57697 (LISTEN) sshd 2637 root 3u IPv4 11555 0t0 TCP *:22 (LISTEN) sshd 2637 root 4u IPv6 11557 0t0 TCP *:22 (LISTEN) ntpd 2648 ntp 16u IPv4 15718 0t0 UDP *:123 ntpd 2648 ntp 17u IPv4 15723 0t0 UDP localhost:123 ntpd 2648 ntp 18u IPv4 15725 0t0 UDP ip-192-168-0-176.ap-northeast-1.compute.internal:123 java 2756 sgserver 25u IPv4 15842 0t0 TCP *:8080 (LISTEN) amazon-ss 2800 root 7u IPv4 14201 0t0 TCP ip-192-168-0-176.ap-northeast-1.compute.internal:39422->54.240.225.178:443 (ESTABLISHED) amazon-ss 2800 root 12u IPv4 13668 0t0 TCP ip-192-168-0-176.ap-northeast-1.compute.internal:57576->52.119.220.97:443 (ESTABLISHED) ssm-sessi 2971 root 19u IPv4 11743 0t0 TCP ip-192-168-0-176.ap-northeast-1.compute.internal:57646->52.119.220.97:443 (ESTABLISHED)
アクティベート後に再度実行したのですが、-p
をつけ忘れました。(うっかり)
[root@ip-192-168-0-146 ~]# lsof -i COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME dhclient 1935 root 5u IPv4 1304 0t0 UDP *:bootpc rpcbind 2341 rpc 6u IPv4 11994 0t0 UDP *:sunrpc rpcbind 2341 rpc 7u IPv4 11995 0t0 UDP *:818 rpcbind 2341 rpc 8u IPv4 11996 0t0 TCP *:sunrpc (LISTEN) rpcbind 2341 rpc 9u IPv6 11997 0t0 UDP *:sunrpc rpcbind 2341 rpc 10u IPv6 11998 0t0 UDP *:818 rpcbind 2341 rpc 11u IPv6 11999 0t0 TCP *:sunrpc (LISTEN) rpc.statd 2362 rpcuser 5u IPv4 13648 0t0 UDP localhost:842 rpc.statd 2362 rpcuser 8u IPv4 923 0t0 UDP *:40678 rpc.statd 2362 rpcuser 9u IPv4 925 0t0 TCP *:38613 (LISTEN) rpc.statd 2362 rpcuser 10u IPv6 927 0t0 UDP *:35955 rpc.statd 2362 rpcuser 11u IPv6 929 0t0 TCP *:47835 (LISTEN) sshd 2653 root 3u IPv4 2297 0t0 TCP *:ssh (LISTEN) sshd 2653 root 4u IPv6 2299 0t0 TCP *:ssh (LISTEN) ntpd 2664 ntp 16u IPv4 15565 0t0 UDP *:ntp ntpd 2664 ntp 17u IPv4 15570 0t0 UDP localhost:ntp ntpd 2664 ntp 18u IPv4 15572 0t0 UDP ip-192-168-0-146.ap-northeast-1.compute.internal:ntp amazon-ss 2817 root 7u IPv4 50918 0t0 TCP ip-192-168-0-146.ap-northeast-1.compute.internal:43344->54.240.225.173:https (ESTABLISHED) amazon-ss 2817 root 12u IPv4 12654 0t0 TCP ip-192-168-0-146.ap-northeast-1.compute.internal:35594->52.119.220.97:https (ESTABLISHED) ssm-sessi 2953 root 20u IPv4 15133 0t0 TCP ip-192-168-0-146.ap-northeast-1.compute.internal:35634->52.119.220.97:https (ESTABLISHED) fmrsd 4091 root 7u IPv4 2675 0t0 TCP localhost:xmltec-xmlmail (LISTEN) fmrsd 4091 root 10u IPv4 19824 0t0 TCP *:https (LISTEN) java 4442 sgserver 69u IPv4 23676 0t0 TCP ip-192-168-0-146.ap-northeast-1.compute.internal:50532->ec2-54-65-3-60.ap-northeast-1.compute.amazonaws.com:https (ESTABLISHED) java 4442 sgserver 70u IPv4 14311 0t0 TCP localhost:websm (LISTEN) java 4442 sgserver 71u IPv4 20859 0t0 TCP ip-192-168-0-146.ap-northeast-1.compute.internal:50546->ec2-54-65-3-60.ap-northeast-1.compute.amazonaws.com:https (ESTABLISHED) java 4442 sgserver 72u IPv4 16166 0t0 TCP ip-192-168-0-146.ap-northeast-1.compute.internal:50536->ec2-54-65-3-60.ap-northeast-1.compute.amazonaws.com:https (ESTABLISHED) java 4442 sgserver 73u IPv4 1860 0t0 TCP ip-192-168-0-146.ap-northeast-1.compute.internal:50542->ec2-54-65-3-60.ap-northeast-1.compute.amazonaws.com:https (ESTABLISHED) java 4442 sgserver 74u IPv4 19032 0t0 TCP ip-192-168-0-146.ap-northeast-1.compute.internal:50538->ec2-54-65-3-60.ap-northeast-1.compute.amazonaws.com:https (ESTABLISHED) java 4442 sgserver 75u IPv4 14312 0t0 TCP ip-192-168-0-146.ap-northeast-1.compute.internal:50540->ec2-54-65-3-60.ap-northeast-1.compute.amazonaws.com:https (ESTABLISHED) java 4442 sgserver 76u IPv4 1861 0t0 TCP ip-192-168-0-146.ap-northeast-1.compute.internal:50534->ec2-54-65-3-60.ap-northeast-1.compute.amazonaws.com:https (ESTABLISHED) java 4442 sgserver 77u IPv4 19851 0t0 TCP ip-192-168-0-146.ap-northeast-1.compute.internal:50544->ec2-54-65-3-60.ap-northeast-1.compute.amazonaws.com:https (ESTABLISHED)
pstree コマンド
プロセスを確認してみると、ハイライト部が通常のインスタンスと異なります。
[root@ip-192-168-0-176 ~]# pstree -a init ├─acpid ├─agetty ttyS0 9600 vt100-nav ├─amazon-ssm-agen │ ├─ssm-session-wor cm-chiba.yukihiro-05e65802da1da7f1f i-096172280137100de │ │ ├─sh │ │ │ └─sudo su - │ │ │ └─su - │ │ │ └─bash │ │ │ └─pstree -a │ │ └─17*[{ssm-session-wor}] │ └─24*[{amazon-ssm-agen}] ├─anacron -s ├─atd ├─auditd │ └─{auditd} ├─crond │ └─crond │ └─sh -c /usr/local/bin/launch-thinstaller >/dev/null 2>&1 │ └─launch-thinstal /usr/local/bin/launch-thinstaller │ └─su -c /opt/jre/bin/java -DCORAL_CONFIG_PATH=config/coral-config-thinstaller -Dsgw.proxy.file=/var/aws-storage-gateway/config/proxy.properties -jar FmrsThinstaller.jar ... │ └─java -DCORAL_CONFIG_PATH=config/coral-config-thinstaller -Dsgw.proxy.file=/var/aws-storage-gateway/config/proxy.properties -jar FmrsThinstaller.jar │ └─22*[{java}] ├─dbus-daemon --system ├─dhclient -q -lf /var/lib/dhclient/dhclient-eth0.leases -pf /var/run/dhclient-eth0.pid eth0 ├─irqbalance --pid=/var/run/irqbalance.pid --hintpolicy=subset │ └─{irqbalance} ├─lvmetad ├─lvmpolld ├─mingetty /dev/tty1 ├─mingetty /dev/tty2 ├─mingetty /dev/tty3 ├─mingetty /dev/tty4 ├─mingetty /dev/tty5 ├─mingetty /dev/tty6 ├─ntpd -u ntp:ntp -p /var/run/ntpd.pid -g │ └─{ntpd} ├─rngd --no-tpm=1 --quiet ├─rpc.statd ├─rpcbind ├─rsyslogd -i /var/run/syslogd.pid -c 5 │ └─3*[{rsyslogd}] ├─sshd └─udevd -d ├─udevd -d └─udevd -d
アクティベート後には crond 配下が無くなり、以下が追加されます。
├─su -c /opt/jre/bin/java -Xms128m -Xmx384m -DCORAL_CONFIG_PATH=config/coral-config -jar FmrsAgent.jar -m -s /bin/bash sgserver │ └─java -Xms128m -Xmx384m -DCORAL_CONFIG_PATH=config/coral-config -jar FmrsAgent.jar │ └─80*[{java}]
ローンチ時に呼び出されているファイルがあるので、それを確認してみます。
/usr/local/bin
インストール時に実行する内容が定義されています。
アクティベート用に必要なのは 80 番ポートなのにリッスンしていたのは 8080 だった、という点については、ここでマッピングが行われていることが答えになりそうです。
[root@ip-192-168-0-176 ~]# cat /usr/local/bin/launch-thinstaller #!/bin/bash # # Launch a single instance of Thinstaller.jar source /etc/aws-storage-gateway.config THINSTALLER_JAR=FmrsThinstaller.jar ACTIVATION_PORT=8080 REDIRECT_RULE=(PREROUTING -p tcp -j REDIRECT --to-port $ACTIVATION_PORT --dport 80) LOG_DIRECTORY="$SGW_WORKING_DIR/var/output/logs" LOG_FILE_NAME="$LOG_DIRECTORY/Thinstaller.log.$(date +%F-%H)" JAVA=/usr/bin/java [[ -e /opt/jre ]] && JAVA=/opt/jre/bin/java JAVA_FLAGS="-DCORAL_CONFIG_PATH=config/coral-config-thinstaller -Dsgw.proxy.file=$SGW_CONFIG_DIR/proxy.properties" log() { echo -e "$(date) [$$] $0: $@" } is_ec2() { [[ -e "$SGW_WORKING_DIR/ec2Indicator.txt" ]] } is_install_stage() { [[ -e "$SGW_WORKING_DIR/var/activation-indicator" ]] } is_activated() { [[ -f "$SGW_WORKING_DIR/var/cert.pem" ]] } map_http_port() { if /sbin/iptables -nL -t nat | grep -q " ${ACTIVATION_PORT}$"; then return 0 fi log "re-establishing port 80 -> 8080 mapping" # Set up the iptables mapping of port 80 to 8080 to avoid requiring root to activate. /sbin/iptables -t nat -I ${REDIRECT_RULE[@]} if ! is_ec2; then # CentOs default firewall rules block port 8080, so we need to open it. /sbin/iptables -I RH-Firewall-1-INPUT 1 -p tcp --dport $ACTIVATION_PORT -j ACCEPT fi } unmap_http_port() { if ! /sbin/iptables -nL -t nat | grep -q " ${ACTIVATION_PORT}$"; then return 0 fi log "removing port 80 -> 8080 mapping" /sbin/iptables -t nat -D ${REDIRECT_RULE[@]} if ! is_ec2; then /sbin/iptables -D RH-Firewall-1-INPUT -p tcp --dport $ACTIVATION_PORT -j ACCEPT fi } run_thinstaller_jar() { if is_activated; then log "running thinstaller with 3600 seconds timeout" # After activation thinstaller should not run for more than an hour /usr/bin/timeout 3600 su -c "$JAVA $JAVA_FLAGS -jar $THINSTALLER_JAR" -m sgserver else # Before activation thinstaller could be running for long su -c "$JAVA $JAVA_FLAGS -jar $THINSTALLER_JAR" -m sgserver fi } fix_log_dir_permissions() { [[ -d "$LOG_DIRECTORY" ]] || mkdir -p "$LOG_DIRECTORY" chown sgserver:sgserver "$SGW_WORKING_DIR"/var/* chown -RL sgserver:sgserver "$LOG_DIRECTORY" } fix_port_mapping() { if is_activated; then unmap_http_port else map_http_port fi } idempotency_check() { if /usr/bin/pgrep -f $THINSTALLER_JAR >/dev/null; then # check for restart indicator RESTART_INDICATOR="$SGW_CONFIG_DIR/restart-indicator" if [[ -f "$RESTART_INDICATOR" && ! -f "$ACTIVATED_INDICATOR" ]]; then /usr/bin/pkill -f $THINSTALLER_JAR >/dev/null || exit 1 rm -f "$RESTART_INDICATOR" else log "another instance already running - end" exit 0 fi fi } run_thinstaller() { cd "$SGW_WORKING_DIR" export SGW_GLOBAL_COMPONENT_VERSION log "running Thinstaller" run_thinstaller_jar } # MAIN exec &>> "$LOG_FILE_NAME" log "starting Thinstaller" fix_log_dir_permissions fix_port_mapping idempotency_check run_thinstaller if is_install_stage; then log "relaunching Thinstaller for installation stage" run_thinstaller_jar fi log "end"
上記のファイルで source として指定されている config は以下のようになっていました。
[root@ip-192-168-0-176 ~]# cat /etc/aws-storage-gateway.config SGW_CONFIG_DIR=/var/aws-storage-gateway/config SGW_GLOBAL_COMPONENT_VERSION=5.0.345.0 SGW_LOCAL_USER=admin SGW_WORKING_DIR=/usr/local/aws-storage-gateway
/etc 配下に config が配置されていたので、ついでにaws
の名称がつくものを確認してみました。
[root@ip-192-168-0-176 ~]# ls -la /etc | grep aws -rw-rw-rw- 1 root root 0 Jun 30 21:22 aws-sg-routingtable -rw-rw-rw- 1 root root 0 Jun 30 21:22 aws-sg-temp-routingtable -rw-r--r-- 1 root root 154 Jun 30 21:22 aws-storage-gateway.config -rw-r--r-- 1 root root 1908 Jun 30 19:59 ntp.conf.aws-storage-gateway
/usr/local/bin 以下にもう一つファイルがあったのでついでに確認します。
[root@ip-192-168-0-176 ~]# cat /usr/local/bin/bootcheck-thinstaller #!/bin/bash # # Run the bootcheck process. Multiple running instances are allowed, # but unrealistic since expectation is to execute this only # periodically. source /etc/aws-storage-gateway.config source "$SGW_WORKING_DIR/boot-resource-check" bootcheck_start
ファイルシステム関連
Storage Gateway がインストールされたことで何か変化があるのかな?と思っていたのですが、特に通常のインスタンスと変わりありませんでした。
df コマンド
[root@ip-192-168-0-176 ~]# df -T Filesystem Type 1K-blocks Used Available Use% Mounted on devtmpfs devtmpfs 16050644 68 16050576 1% /dev tmpfs tmpfs 16061324 0 16061324 0% /dev/shm /dev/nvme0n1p1 ext4 82436764 2075188 80261328 3% /
fdisk コマンド
[root@ip-192-168-0-176 ~]# fdisk -l WARNING: fdisk GPT support is currently new, and therefore in an experimental phase. Use at your own discretion. Disk /dev/nvme0n1: 85.9 GB, 85899345920 bytes, 167772160 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk label type: gpt # Start End Size Type Name 1 4096 167772126 80G Linux filesyste Linux 128 2048 4095 1M BIOS boot parti BIOS Boot Partition
lsblk コマンド
[root@ip-192-168-0-176 ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT nvme0n1 259:0 0 80G 0 disk ├─nvme0n1p1 259:1 0 80G 0 part / └─nvme0n1p128 259:2 0 1M 0 part
リソース関連
ストレージを確認したついでにメモリや CPU の使用状況も確認してみます。とはいえ、単にデプロイしてアクティベートしただけで DataSync タスクの実行も一切行っていないのでほぼ下限に張り付きです。
ちなみに今回は m5.2xlarge を使用しているので、 8 vCPU 、メモリ 32 GiB です。
top コマンド
top - 12:44:54 up 7 min, 0 users, load average: 0.00, 0.02, 0.00 Tasks: 128 total, 1 running, 74 sleeping, 0 stopped, 0 zombie Cpu(s): 0.0%us, 0.1%sy, 0.0%ni, 99.8%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Mem: 32122644k total, 950412k used, 31172232k free, 11064k buffers Swap: 0k total, 0k used, 0k free, 295248k cached
free コマンド
-m
オプションを使用しているのでメガバイト単位での表示です。
sh-4.2$ free -m total used free shared buffers cached Mem: 31369 935 30434 0 11 289 -/+ buffers/cache: 634 30734 Swap: 0 0 0
vmstat コマンド
いつまで経っても見方が覚えられません。
sh-4.2$ vmstat procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 0 0 0 31164856 11532 296372 0 0 57 5 98 269 1 0 99 0 0
cloud-init 関連
/etc/cloud/cloud.cfg
cloud-init の実行内容を定義する/etc/cloud/cloud.cfg
は通常のものと変わりありません。cloud.cfg.d
配下に格納されているファイルに違いがあります。
[root@ip-192-168-0-176 ~]# ls -la /etc/cloud/ total 20 drwxr-xr-x 4 root root 4096 Nov 16 2018 . drwxrwxr-x+ 83 root root 4096 Aug 19 11:09 .. -rw-r--r-- 1 root root 559 Oct 4 2018 cloud.cfg drwxr-xr-x 2 root root 4096 Jun 30 21:22 cloud.cfg.d drwxr-xr-x 2 root root 4096 Nov 16 2018 templates
/etc/cloud/cloud.cfg.d
通常のインスタンスにはない100_sguser_only.cfg
というファイルが存在します。
[root@ip-192-168-0-176 ~]# ls -la /etc/cloud/cloud.cfg.d/ total 28 drwxr-xr-x 2 root root 4096 Jun 30 21:22 . drwxr-xr-x 4 root root 4096 Nov 16 2018 .. -rw-r--r-- 1 root root 2610 Oct 4 2018 00_defaults.cfg -rw-r--r-- 1 root root 1963 Oct 4 2018 05_logging.cfg -rw-r--r-- 1 root root 312 Jun 30 21:22 100_sguser_only.cfg -rw-r--r-- 1 root root 586 Apr 11 2018 10_aws_yumvars.cfg -rw-r--r-- 1 root root 141 Oct 10 2014 README
内訳としては以下のようになっています。admin
ユーザーをセットアップする処理が書かれていますね。
[root@ip-192-168-0-176 ~]# cat /etc/cloud/cloud.cfg.d/100_sguser_only.cfg #cloud-config ## # Override system user so that sguser (admin) ssh auth keys gets filled with EC2 instance keypair # system_info: default_user: name: admin homedir: /home/sguser lock_passwd: true gecos: SGW Local User groups: [ wheel ] runcmd: - [ "rm -rf /root/.ssh/authorized_keys" ]
通常の Amazon Linux と異なりec2-user
を無効化するような処理をどこかで行っているのだろうと思いつつ、該当する箇所を確認することができませんでした。
/var/lib/cloud
DataSync エージェントインスタンス特有の設定内容は無いのですが、こういう構造になっているんだ、と改めて見て興味深かかった/var/lib/cloud
配下を載せておきます。
動作確認を行なったインスタンスはi-096172280137100de
なのですが、それとは異なるインスタンスの ID もディレクトリ名として存在します。 AMI のベースとなったインスタンスの ID かと思っています。(通常の Amzon Linux インスタンスには存在しませんでした。)
root@ip-192-168-0-176 ~]# tree /var/lib/cloud/ /var/lib/cloud/ ├── data │ ├── instance-id │ ├── previous-datasource │ ├── previous-instance-id │ ├── result.json │ └── status.json ├── handlers ├── instance -> /var/lib/cloud/instances/i-096172280137100de ├── instances │ ├── i-061becb0c1eaxxx32 │ │ ├── cloud-config.txt │ │ ├── datasource │ │ ├── handlers │ │ ├── obj.pkl │ │ ├── scripts │ │ ├── sem │ │ │ ├── config_keys_to_console │ │ │ ├── config_locale │ │ │ ├── config_mounts │ │ │ ├── config_package_update_upgrade_install │ │ │ ├── config_phone_home │ │ │ ├── config_power_state_change │ │ │ ├── config_puppet │ │ │ ├── config_resolv_conf │ │ │ ├── config_rsyslog │ │ │ ├── config_runcmd │ │ │ ├── config_scripts_per_instance │ │ │ ├── config_scripts_user │ │ │ ├── config_set_hostname │ │ │ ├── config_set_passwords │ │ │ ├── config_ssh │ │ │ ├── config_ssh_authkey_fingerprints │ │ │ ├── config_timezone │ │ │ ├── config_users_groups │ │ │ ├── config_write_files │ │ │ ├── config_write_metadata │ │ │ ├── config_yum_add_repo │ │ │ ├── config_yum_configure │ │ │ └── consume_data │ │ ├── user-data.txt │ │ ├── user-data.txt.i │ │ ├── vendor-data.txt │ │ └── vendor-data.txt.i │ └── i-096172280137100de │ ├── boot-finished │ ├── cloud-config.txt │ ├── datasource │ ├── handlers │ ├── obj.pkl │ ├── scripts │ │ ├── part-001 │ │ └── runcmd │ ├── sem │ │ ├── config_keys_to_console │ │ ├── config_locale │ │ ├── config_mounts │ │ ├── config_package_update_upgrade_install │ │ ├── config_phone_home │ │ ├── config_power_state_change │ │ ├── config_puppet │ │ ├── config_resolv_conf │ │ ├── config_rsyslog │ │ ├── config_runcmd │ │ ├── config_scripts_per_instance │ │ ├── config_scripts_user │ │ ├── config_set_hostname │ │ ├── config_set_passwords │ │ ├── config_ssh │ │ ├── config_ssh_authkey_fingerprints │ │ ├── config_timezone │ │ ├── config_users_groups │ │ ├── config_write_files │ │ ├── config_write_metadata │ │ ├── config_yum_add_repo │ │ ├── config_yum_configure │ │ └── consume_data │ ├── user-data.txt │ ├── user-data.txt.i │ ├── vendor-data.txt │ └── vendor-data.txt.i ├── scripts │ ├── per-boot │ ├── per-instance │ ├── per-once │ └── vendor ├── seed └── sem └── config_scripts_per_once.once
あらかた気になった部分のチェックが終わりました。
終わりに
DataSync エージェントをデプロイした EC2 インスタンスに接続してもろもろの情報を確認してみました。
通常はローカルコンソールに接続できればよく、OS 内部にアクセスする必要はありません。とはいえ気になってしまったので仕方がありません。ちょっと裏技チックな方式で接続したので、ここぞとばかりに思いついた限り気になる部分を確認してみました。
探究心が湧いた方の助けになれば幸いです。
以上、千葉(幸)がお送りしました。